using System;
using System.Collections.Generic;
using Domain.Dto;
using Domain.Model;
using Gmmy.DomainExtension;
using System.Threading.Tasks;

namespace Domain.Interface
{
    public interface IModuleRepository : IRepository<Module, EntityList<Module>>
    {
		/// <summary>
        /// 获取功能模块列表
        /// </summary>
        /// <param name="input"></param>
        /// <param name="specification"></param>
        /// <returns></returns>
        Task<EntityList<ModuleListDto>> GetList(ModuleListInput input, ISpecification<ModuleListInput> specification);

        /// <summary>
        /// 获取功能详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<ModuleDto> GetModule(Guid id);

        /// <summary>
        /// 获取所有模块
        /// </summary>
        /// <returns></returns>
        Task<List<ModuleDto>> GetModuleAll();

        /// <summary>
        /// 获取所有模块功能地址
        /// </summary>
        /// <returns></returns>
        Task<List<string>> GetModuleAddressAll();
    }
}